#pragma once
#include "Character.h"
#include "Equipment.h"
#include "Skill.h"
#include <iostream>
class Warrior : public Character {
public:
    Warrior(const std::string& name, const std::string& info);
    Warrior(const std::string& name, const std::string& info,
        int maxHealth, int attack, int defense, int maxMP);
    void Attack(Monster& monster) override;
    void EndTurn() override;
    Character* clone() const override;
    std::string getType() const override;
protected:
    void uniqueEffect() override;
    void initialize() override;
private:
    int tempAtk = 0;
};

// 法师职业
class Mage : public Character {
public:
    Mage(const std::string& name, const std::string& info);
    Mage(const std::string& name, const std::string& info,
        int maxHealth, int attack, int defense, int maxMP);
    void Attack(Monster& monster) override;
    void EndTurn() override;
    Character* clone() const override;
    std::string getType() const override;
protected:
    void uniqueEffect() override;
    void initialize() override;
private:
    int regenMP = 5;
};

// 弓箭手职业
class Archer : public Character {
public:
    Archer(const std::string& name, const std::string& info);
    Archer(const std::string& name, const std::string& info,
        int maxHealth, int attack, int defense, int maxMP);
    void Attack(Monster& monster) override;
    void EndTurn() override;
    Character* clone() const override;
    std::string getType() const override;
protected:
    void uniqueEffect() override;
    void initialize() override;
private:
    int piercingChance = 20; // 15%几率无视防御
    int tempAtk = 0;
};